{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### FIR filter\n",
    "\n",
    "\\begin{equation}\n",
    "Y_{FIR}[z] = X_{FIR}[z] \\cdot (2^{33} + (bb \\cdot 2^{5} - 2^{33})z^{-1})\n",
    "\\end{equation}\n",
    "\n",
    "\\begin{align}\n",
    "b[0] & = 2^{33} \\\\\n",
    "b[1] & = bb \\cdot 2^{5} - 2^{33}\n",
    "\\end{align}\n",
    "\n",
    "### IIR1 filter\n",
    "\n",
    "\\begin{equation}\n",
    "Y_{IIR1}[z] = X_{IIR1}[z] \\cdot \\frac{1}{2^{33} + (aa \\cdot 2^{8} - 2^{33})z^{-1}}\n",
    "\\end{equation}\n",
    "\n",
    "\\begin{align}\n",
    "a[0] & = 1 \\\\\n",
    "a[1] & = aa \\cdot 2^{-25} - 1\n",
    "\\end{align}\n",
    "\n",
    "### IIR2 filter\n",
    "\n",
    "\\begin{equation}\n",
    "Y_{IIR2}[z] = X_{IIR2}[z] \\cdot \\frac{1 \\cdot z^{-1}}{1 - pp \\cdot 2^{-16} \\cdot z^{-1}}\n",
    "\\end{equation}\n",
    "\n",
    "\\begin{align}\n",
    "b[0] & = 0 \\\\\n",
    "b[1] & = 1 \\\\\n",
    "a[0] & = 1 \\\\\n",
    "a[1] & = pp \\cdot 2^{-16}\n",
    "\\end{align}\n",
    "\n",
    "### Scaling multiplier\n",
    "\n",
    "\\begin{equation}\n",
    "Y_{MUL}[z] = X_{MUL}[z] \\cdot pp\n",
    "\\end{equation}\n",
    "\n",
    "\n",
    "### Entire filter\n",
    "\n",
    "\\begin{equation}\n",
    "X_{OUT} = \n",
    "\\end{equation}\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "from scipy import signal\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "FS = 125000000\n",
    "\n",
    "filters = { 1.0: (0x7D93, 0x437C7, 0xd9999a, 0x2666),\n",
    "           20.0: (0x4C5F, 0x2F38B, 0xd9999a, 0x2666)}\n",
    "\n",
    "[aa, bb, kk, pp] = filters[1.0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "fir  = ([2^33, bb*2^5-2^33], 1)\n",
    "iir1 = (1, [2^33, aa*2^8-2^33])\n",
    "fir2 = ([0, 1], [1, pp*2^(-16)])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "w, h = signal.freqz(fir[0], fir[1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "w, h = signal.freqz([2^33, bb*2^5-3^33])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nY0zKyZULxo2DsWPhxx/hxhth8eLAl1v2/9u793grx7yP45+vdpEihUI1KpNMpZTsJ4OZQk2Fcgh5\nUDJ91VkAABSySURBVJ4yZBzHkEnjMaMcxjSNxkg68DREKQ1NJCm9yJAOOrAb2cQUKYoOSql+zx/X\ntceaZe3drr3X3mvt/Xu/XuvlXvd93ff1u7pr/Vz34boOOZrpl05n3LnjyPs8j9YjW3PPa/fw7a5v\n01+5K1PpvDSaC+Sb2YdmtgOYACQPsdsDGBeXJwNnKNyd7gFMMLPtZrYSyAdyzWyNmS0CMLPNwHKg\nfvyece+mOOdKhwT9+oVxSmvVCiPRDB6c/kulkujdujfLr11O92bdGTR7ELljcnl7zdvprdiVqXQm\nwvrAqoTvq+O6lGViEtsIHFqcfSU1AtoA81LU3ReYniooSVdJWiBpwc6dPj2Lc9nk+ONhwQK45JJw\nz7BrV1i3Lv311qtZj0kXTuKZi57hsy2fcdLokxj48kAfxLuCyMqHZSTVBJ4BbjKzTUnbBhEuoY5P\nta+ZjTKzdmbWLicnJ/3BOudKVc2aYaLf0aPhtdfghBNg9uyyqfv8H51P3i/y6N26N/e9fh+tR7Zm\n7r/mlk3lLm3SmQg/ARomfG8Q16UsIykHqEV4aKbQfSVVJSTB8WY2JfFg8d2Us4FLU72g6ZyrGCS4\n8kqYNy+8cH/mmXDrrbB9e/rrrl29No/2eJSXLnuJHbt2cNpjp3HdC9exefvm9Ffu0iKdiXA+0FRS\nY0nVCA+/JL8NNBXoE5d7EgZitbi+l6T9JTUGmgJvxfuHY4HlZjYs8UDFeTfFOVextGoVXrG4+moY\nOhTat4e8vLKpu9MxnVh2zTJu/K8bGTF/BC0fbsmL+Wl7wt+lUdoSYbzndx0wg/BQy9Nm9q6kuyR1\nj8XGAodKygduBn4d930XeBrIA14ErjWzXcApwOXA6fH9k8WSusVjpXw3xTlXsdWoAQ8/HF66/+QT\nOPFE+Mtf0jPhb7Ka1WryQJcHeL3v69SoWoOu47vS59k+rN+6Pv2Vu1LjQ6z5e4TOVRhr10LfvmEG\niy5dwmsX6R68u8D2ndsZ8uoQ7nv9PupUr8ND3R7igh9dUCGHafP3CJ1zLkPVqwfTpsFDD8GcOWFu\nw3HjyqZ3uH/O/gw+fTALfr6Ahgc35MJJF3LB0xewZvOa9FfuSsQToXOuQpHCSDRLlkDLlmHS37PP\nhtWry6b+1ke05s0r3+T3Z/6e6fnTaT6iOY+9/RiV+epbpvNE6JyrkI49Nkz4O3x46B22aAFjx5ZN\n7zBnvxwGnDKAJf2X0KpeK/pO7UvnJzqz8suV6a/c7TVPhM65Cmu//eCGG2DpUmjbNrxy0aULrCyj\nfHTsocfySp9XePish5m3eh4tH27J8DeHs2t3mofEcXvFH5bxh2WcqxR274aRI+G228LQbL/5Ddxy\nC1SrVjb1r9q4iqunXc30/Omc3OBkxnQfQ/PDk4dfzg7+sIxzzmWh/fYL9w6XL4du3WDQIGjdOlw2\nLQsNazXk+f9+nifOe4IV61fQ5pE2DHl1iA/inQE8ETrnKpUGDWDyZHj++TASTceOcPnl4dWLdJPE\npa0uJe/aPM477jzueOUO2o1ux8JPF6a/clcoT4TOuUqpWzd45x24/XaYODE8XPOHP5TNMG11a9Rl\nQs8JPHvxs3yx9Qtyx+Ry28zb2PbttvRX7r7H7xH6PULnKr333oNf/Sr0Eps0gfvvh/PPD69ipNtX\n33zFgJkDGL1oNE3rNGX0OaP5aaOfpr/iEvB7hM45V8E0axZexJ8xI0wE3LMndOgAixalv+5DDjiE\nUeeMYlbvWeyyXXQY14Frpl3Dpu2b9ryzKxWeCJ1zLurcGRYvDmOX5uWFcUt79Qo9xnQ7vfHpLO2/\nlJvb38yoRaNoMaIFL7z/Qvordp4InXMuUU4O9O8P778fniydNi0M1davH3z8cXrrrlGtBn/82R/5\nR99/cPD+B3PWk2dx2ZTL+GLrF+mtuJLze4R+j9A5V4R16+Dee2HEiPD9qqtg4EA46qj01rt953bu\nnXsvd792N7UPqM2DXR/kohYXZcQg3hXtHqEnQk+EzrliWLUKBg8OM1pUqQK9e8OAAdC0aXrrXbZ2\nGf2m9mP+p/Pp3qw7I7qNoP7B9dNb6R5UtETol0adc64YGjaEUaNgxYpwmfTxx+G44+Dii+Htt9NX\n7/H1jueNfm8wtNNQZn4wk+YjmjN64eisHcRb0mBJS+O8sS9JStm3ltRH0vvx0ydVmVKLKVv/MEuD\n9widc/tq7Vp44IFwyXTTJujUCa6/PryfWKVKeurM35DPz//+c+Z8NIeOjToy+pzRHFPnmPRUVoSS\n9AglHWxmm+LyDUBzM+ufVKYOsABoBxiwEDjRzL4sWeSpeY/QOef2Qb164d7hv/4V/puXB927h0ul\nQ4fChg2lX+cP6/yQWb1n8cjZj7BwzUKOf/h4hr0xLKsG8S5IglENQqJL9jNgppltiMlvJtAlXTFV\n6h5hw4YN7fHHHy/vMJxzFYAZfPVVeLhmy5Ywtmnt2nDYYVCzZunX9/n2z/nTij/xxoY3OO6g4xjQ\nbACNazQu/YpS6Nix4w5gWcKqUWY2qrj7S7ob6A1sBDqa2edJ228BDjCzIfH7HcA2Mxta4uBTxVOZ\nE6FfGnXOpcPSpfDQQ/DUU7B5cxit5oorwgM2Rx9devWYGRPfncj1069n4zcbGXTaIAaeNpBqVdI7\npcaeLo1Kehk4IsWmQWb2XEK5gYSEd2fS/p4Iy4onQudcOm3dClOmwGOPwezZYd0pp8CFF8IFF4QB\nwEvDF1u/4MYXb+TJZU/Ssm5LxnYfS2793NI5eAql9dSopB8AL5hZy6T1lwAdzOzq+P0RYI6ZPVXS\nOlPG4YnQE6FzLv0+/jg8aTppUugxAvz4xyEhnnVWGPS7pK8ITlsxjf7T+rNmyxp+2f6X3NXxLg6s\nemDJg09SwodlmprZ+3H5euCnZtYzqUwdwgMybeOqRYSHZdJw59UToSdC51yZW7EiJMRJk2DJkrCu\ncWPo0iV8Tj993+8rbvxmI7e9fBuPLHyEJrWbMOacMXRs3LH0gqfEifAZoBmwG/gY6G9mn0hqF5ev\njOX6ArfH3e42s8dKIfTUMXki9ETonCs/K1fCiy+Gz6xZ8PXX4fWLNm3g1FO/+9Srt3fHnfPRHK6c\neiUffPkBV7W9ivs73U+tA2qVSswV7YV6T4SeCJ1zGWL7dpg7F+bMgddeg3nz4Jtvwrajj4YTToDW\nrb/7b6NG4enUwmz9dit3vnInw94cxhE1j2DkWSM5p9k5JY7TE2EF4onQOZfJduwIU0HNnQsLF4bL\nqO+9B7t3h+3VqoVLqsccEz5NmsARR0DduqEHWbcu1KkDiz6bT7+p/Vi2bhmXtLyE4V2Gc3iNw/c5\nLk+EFYgnQudcttm6Fd55JyTF/Pzw+eCD8NmyJfU+1apB9Zo72HXy79nSdjBVdh7MsPaTuaF7h32K\noaIlwpx0HlxSF2A4UAUYY2b3JW3fH/grcCKwHrjYzD6K2wYC/YBdwA1mNkNSw1i+HmE0glFmNjyW\nrwNMBBoBHwEXpWs4HuecKy8HHgi5ueGTyAzWrw8v9Bd81q4NI9xs2wbbtlVj69Y7+HTV+Sw87Gaa\nHf7D8mlABkpbj1BSFWAF0AlYDcwHLjGzvIQyvwBamVl/Sb2A88zsYknNgaeAXOAo4GXgWKAucKSZ\nLZJ0EOHx2nPNLE/S/cAGM7tP0q+B2mZ2W1Exeo/QOef2XkXrEaZzrNFcIN/MPjSzHcAEoEdSmR7A\nuLg8GThDYbKtHsAEM9tuZiuBfCDXzNaY2SIAM9sMLAfqpzjWOODcNLXLOedcBZLORFgfWJXwfTXf\nJa3vlTGznYRx5w4tzr6SGgFtgHlxVT0zWxOXPyNcPnXOOeeKlJWzT0iqCTwD3JQ0kjkAFq73przm\nK+kqSQskLdi5c2eaI3XOOZfp0pkIPwEaJnxvENelLCMpB6hFeGim0H0lVSUkwfFmNiWhzFpJR8Yy\nRwLrUgVlZqPMrJ2ZtcvJSeuzQs4557JAOhPhfKCppMaSqgG9gKlJZaYCBTMP9wRmx97cVKCXpP0l\nNQaaAm/F+4djgeVmNqyIY/UBnsM555zbg7R1icxsp6TrgBmE1yceNbN3Jd0FLDCzqYSk9rikfGAD\nIVkSyz0N5AE7gWvNbJekU4HLgWWSFseqbjezF4D7gKcl9SOMX3dRutrmnHOu4vAX6v31Ceec2yv+\n+oRzzjlXgVTqHqGk3cC2fdw9h3DZNptlexuyPX7I/jZke/yQ/W0oj/irm1mF6UhV6kRYEpIWmFm7\n8o6jJLK9DdkeP2R/G7I9fsj+NmR7/JmgwmR055xzbl94InTOOVepeSLcd6PKO4BSkO1tyPb4Ifvb\nkO3xQ/a3IdvjL3d+j9A551yl5j1C55xzlZonQuecc5WaJ8I9kNRF0nuS8uOEv8nb95c0MW6fF6eH\nyhjFiP8KSZ9LWhw/V5ZHnIWR9KikdZLeKWS7JP05tm+ppLZlHeOeFKMNHSRtTDgH/1vWMRZFUkNJ\nr0jKk/SupBtTlMno81DMNmTseZB0gKS3JC2J8f8uRZmM/i3KaGbmn0I+hDFSPwCaANWAJUDzpDK/\nAEbG5V7AxPKOey/jvwL4S3nHWkQbfgK0Bd4pZHs3YDogoD0wr7xj3oc2dACmlXecRcR/JNA2Lh8E\nrEjx9yijz0Mx25Cx5yH+udaMy1UJ87C2TyqTsb9Fmf7xHmHRcoF8M/vQzHYAE4AeSWV6AOPi8mTg\njDhLRiYoTvwZzcxeJQzIXpgewF8teBM4pGA6rkxRjDZkNDNbY2aL4vJmYDnfn2Q7o89DMduQseKf\n65b4tWr8JD/pmMm/RRnNE2HR6gOrEr6v5vv/eP5dxsx2AhuBQ8skuj0rTvwAF8TLWZMlNUyxPZMV\nt42Z7uR42Wu6pBblHUxh4uW2NoQeSaKsOQ9FtAEy+DxIqhJn3VkHzDSzQs9BBv4WZTRPhO7vQCMz\nawXM5Lv/o3RlZxFwtJm1Bh4Eni3neFKSVJMwKfZNZrapvOPZF3toQ0afBzPbZWYnECYqz5XUsrxj\nqig8ERbtEyCxh9QgrktZRlIOUAtYXybR7dke4zez9Wa2PX4dA5xYRrGVluKco4xmZpsKLntZmFuz\nqqTDyjms/yCpKiGBjDezKSmKZPx52FMbsuE8AJjZV8ArQJekTZn8W5TRPBEWbT7QVFJjSdUIN6Cn\nJpWZCvSJyz2B2RbvVmeAPcafdB+nO+HeSTaZCvSOTy22Bzaa2ZryDmpvSDqi4F6OpFzCv8uM+QGL\nsY0FlpvZsEKKZfR5KE4bMvk8SDpc0iFxuTrQCfhnUrFM/i3KaGmbob4iMLOdkq4DZhCewHzUzN6V\ndBewwMymEv5xPS4pn/BARK/yi/g/FTP+GyR1J0zjsoHwFGnGkPQU4Wm+wyStBu4kPCiAmY0EXiA8\nsZgPbAX+p3wiLVwx2tATuEbSTsK0YL0y7AfsFOByYFm8RwVwO/ADyJrzUJw2ZPJ5OBIYJ6kKIUE/\nbWbTsuW3KNP5EGvOOecqNb806pxzrlLzROicc65S80TonHOuUvNE6JxzrlLzROicc65S80Tosoak\nXQkzAyyuSKPr67tZQMaU8Di/lXRLwvf2kkaXPMK9jmPLHrZXj+dwRya+tO4qF3+P0GWTbXGIqZQk\n5cQxFrPVRDO7LnllCdvVFXixZGGVPjPbBpwg6aPyjsU57xG6rBZ7UlMlzQZmxXW3SpofBxL/XULZ\nQZJWSJor6amCnpOkOZLaxeXDCn6c4yDHf0g41tVxfYe4z2RJ/5Q0PmFEkpMk/SMO3PyWpIMkvSrp\nhIQ45kpqvTftklRT0ixJiyQtk9Qjoey/2wU0SzrUGcDLklrEeBbHtjSN+z4raaHCHHdXJRxzS2z7\nu5JelpQb2/xhHIChIMbn4vr3Jd1ZSFtSng/nMoX3CF02qZ4wKshKMzsvLrcFWpnZBkmdgaaEKagE\nTJX0E+BrwkgbJxD+3i8CFu6hvn6EocJOkrQ/8Lqkl+K2NkAL4FPgdeAUSW8BE4GLzWy+pIMJI5SM\nJYzYc5OkY4EDzGxJMdqb2K4c4Dwz2xQvJb4paWosk7Jdsdy3ZrZR0hBguJmNVxhur0qso288fnVg\nvqRnzGw9UIMwRNetkv4GDCEM69WcMDB7wVB9uUBLwmgy8yU9b2YLChpQ2PmIU1M5lxE8EbpsUtil\n0ZlmVjDfX+f4eTt+r0n4IT4I+JuZbQWISWRPOgOtJPWM32vFY+0A3jKz1fFYi4FGhGlv1pjZfAiD\nOMftk4A7JN0K9AX+r5jtTWyXgHtiUt9NmHKnHnBaEe3qDBQk7jeAQZIaAFPM7P24/gZJBf9D0TC2\nb31sY8El1WXAdjP7VtKy2NbEGNfHuqcApwILErYXdj48EbqM4YnQVQRfJywLuNfMHkksIOmmIvbf\nyXe3CQ5IOtb1ZjYj6VgdgO0Jq3ZRxL8lM9sqaSZh4tSLKP4MH4ntuhQ4HDgxJqSPkmJNpSswLMbw\npKR5wFnAC/Ey727gTODkGOOchGN+mzDO5m5ie81sd+yd/rt5yc1N+p7yfDiXSfweoatoZgB9Fead\nQ1J9SXUJPZBz49OKBwHnJOzzEd8lp55Jx7pGYfoeJB0rqUYRdb8HHCnppFj+oISkMQb4MzDfzL7c\nh3bVAtbFJNgRODquT9mueM+yFbA4fm8CfGhmfwaei9tqAV/GJHgc0H4f4uokqU68tHou4TJxosLO\nh3MZw3uErkIxs5ck/Qh4Iz6/sgW4zMwWSZoILCHM8D0/YbehwNPxYZHnE9aPIVwGXBQTy+eEH/vC\n6t4h6WLgwZgYthF6XFvMbKGkTcBj+9i08cDf46XJBcQpeIpo14nA2wm9uouAyyV9C3wG3EPocfaX\ntJyQxN/ch7jeIszx1wB4IvH+YIwv5fmIsTqXEXz2CVcpSfotIUENLaP6jgLmAMeZ2e4U268A2qV6\nfWIf6/sNkG9mE0rjeIXUcQUljDle4m1nZl+UVlzO7S2/NOpcmknqDcwDBqVKgtE2oKtK+EJ9ATMb\nks4kWFLxUu5iwryMhf2ZOFcmvEfonHOuUvMeoXPOuUrNE6FzzrlKzROhc865Ss0ToXPOuUrNE6Fz\nzrlK7f8BpRCmoOlKtwIAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f1871366080>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "fig = plt.figure()\n",
    "plt.title('Digital filter frequency response')\n",
    "ax1 = fig.add_subplot(111)\n",
    "plt.plot(w, 20 * np.log10(abs(h)), 'b')\n",
    "plt.ylabel('Amplitude [dB]', color='b')\n",
    "plt.xlabel('Frequency [rad/sample]')\n",
    "ax2 = ax1.twinx()\n",
    "angles = np.unwrap(np.angle(h))\n",
    "plt.plot(w, angles, 'g')\n",
    "plt.ylabel('Angle (radians)', color='g')\n",
    "plt.grid()\n",
    "plt.axis('tight')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/lib/python3.5/dist-packages/matplotlib/ticker.py:2039: UserWarning: Data has no positive values, and therefore cannot be log-scaled.\n",
      "  \"Data has no positive values, and therefore cannot be \"\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nmaXnYC7H2BxTzui/iLaXHoDxHGNDOKMHGM4ZPcBwQg8wnNADDLfxd5hiGVX1rSQ/yrXP6enu/ubC\nIzFIVX01yS9y7b2j/9bdP194JPbBGf0RVlXPVdXHVfX2DdvPVtV7VXW5qp5Kku7+S3c/keSPSX67\nxLwcL/s5vpJ8I8lL3f3jJA8e+rCsReiPtotJzu7dUFV3JHkmycNJTic5V1Wn9yz5YZLfH9aAHGsX\ns/rx9dck56vqT0lePeQ5WZPQH2Hd/Xqufam810NJLnf3+939WZIXkjya/PfL693u/ufhTspxtM/j\n6/EkT3f3t5N853AnZV1Cf/ycTPLhnsdXrm9LkvNJfnPoEzHJzY6vV5P8tKqeTfL3BeZiDb4ZO0h3\nP730DMzU3W8n+cHSc3B7nNEfPx8luXfP43uub4NNcHwNJPTHz5tJ7q+q+6rqriSPJXl54ZmYw/E1\nkNAfYVX1fJI3kjxQVVeq6nx3f57kySSvJXk3yYvd/c6Sc3I8Ob6+ONzUDGA4Z/QAwwk9wHBCDzCc\n0AMMJ/QAwwk9wHBCDzCc0AMMJ/QAw/0HGwL+iVgxhFsAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f1871448710>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f187145c5f8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "w, mag, phase = signal.dbode(fir)\n",
    "\n",
    "plt.figure()\n",
    "plt.loglog(w, mag)    # Bode magnitude plot\n",
    "plt.figure()\n",
    "plt.semilogx(w, phase)  # Bode phase plot\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
